# 使用官方 Python 3.9 镜像作为基础镜像
FROM python:3.9-slim

# 设置工作目录
WORKDIR /app

# 设置环境变量
ENV PYTHONUNBUFFERED=1
ENV DEBIAN_FRONTEND=noninteractive

# 安装系统依赖
RUN apt-get update && apt-get install -y \
    gcc \
    g++ \
    libglib2.0-0 \
    libsm6 \
    libxext6 \
    libxrender-dev \
    libgomp1 \
    libfontconfig1 \
    fonts-dejavu-core \
    fonts-liberation \
    && rm -rf /var/lib/apt/lists/*

# 复制 requirements.txt（如果存在）或直接安装依赖
COPY requirements.txt* ./

# 安装 Python 依赖
RUN pip install --no-cache-dir --upgrade pip && \
    pip install --no-cache-dir \
    torch==2.0.1+cpu torchvision==0.15.2+cpu -f https://download.pytorch.org/whl/torch_stable.html && \
    pip install --no-cache-dir \
    gradio==4.7.1 \
    numpy==1.24.3 \
    nibabel==5.1.0 \
    matplotlib==3.7.2 \
    Pillow==10.0.0 \
    scipy==1.11.1

# 复制应用代码
COPY . .

# 创建必要的目录
RUN mkdir -p models data

# 设置权限
RUN chmod +x brats_gradio_app.py

# 暴露端口
EXPOSE 9082

# 健康检查
HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 \
    CMD curl -f http://localhost:9082/ || exit 1

# 启动命令
CMD ["python", "brats_gradio_app.py"]